package com.easyaop.test.core.junit.super_test;

import com.easyaop.test.core.junit.super_test.other_pkg.ParentParentBean;

public class ChildBean extends ParentBean {
    private int f_pri_I;

    private final int f_pri_f_I = 0;

    private static int f_pri_s_I;

    private static final int f_pri_sf_I = 0;

    protected int f_pro_I;

    protected final int f_pro_f_I = 0;

    protected static int f_pro_s_I;

    protected static final int f_pro_sf_I = 0;

    int f_I;

    final int f_f_I = 0;

    static int f_s_I;

    static final int f_sf_I = 0;

    private void m_pri() {
        System.out.println("ChildBean.m_pri");
    }

    private final void m_pri_f() {
        System.out.println("ChildBean.m_pri_f");
    }

    private static void m_pri_s() {
        System.out.println("ChildBean.m_pri_s");
    }

    private static final void m_pri_sf() {
        System.out.println("ChildBean.m_pri_sf");
    }

    protected void m_pro() {
        System.out.println("ChildBean.m_pro");
    }

    protected final void m_pro_f() {
        System.out.println("ChildBean.m_pro_f");
    }

    protected static void m_pro_s() {
        System.out.println("ChildBean.m_pro_s");
    }

    protected static final void m_pro_sf() {
        System.out.println("ChildBean.m_pro_sf");
    }

    void m() {
        System.out.println("ChildBean.m");
    }

    final void m_f() {
        System.out.println("ChildBean.m_f");
    }

    static void m_s() {
        System.out.println("ChildBean.m_s");
    }

    static final void m_sf() {
        System.out.println("ChildBean.m_sf");
    }

    @Override
    protected void m_pp_pro_over() {
        super.m_pp_pro_over();
        System.out.println("子类重写pp_pro");
    }

    public void test_pri_f() {
        f_pri_I = 1;
        System.out.println(f_pri_I);
        System.out.println(f_pri_f_I);

        f_pri_s_I = 1;
        System.out.println(f_pri_s_I);
        System.out.println(f_pri_sf_I);

        this.f_pri_I = 1;
        System.out.println(this.f_pri_I);
        System.out.println(this.f_pri_f_I);

        this.f_pri_s_I = 1;
        System.out.println(this.f_pri_s_I);
        System.out.println(this.f_pri_sf_I);

        ChildBean.this.f_pri_I = 1;
        System.out.println(ChildBean.this.f_pri_I);
        System.out.println(ChildBean.this.f_pri_f_I);

        ChildBean.this.f_pri_s_I = 1;
        System.out.println(ChildBean.this.f_pri_s_I);
        System.out.println(ChildBean.this.f_pri_sf_I);
    }

    public void test_pro_f() {
        f_pro_I = 1;
        System.out.println(f_pro_I);
        System.out.println(f_pro_f_I);

        f_pro_s_I = 1;
        System.out.println(f_pro_s_I);
        System.out.println(f_pro_sf_I);
    }

    public void test_def_f() {
        f_I = 1;
        System.out.println(f_I);
        System.out.println(f_f_I);

        f_s_I = 1;
        System.out.println(f_s_I);
        System.out.println(f_sf_I);
    }

    public void test_p_pro_f() {
        f_p_pro_I = 1;
        System.out.println(f_p_pro_I);
        System.out.println(f_p_pro_f_I);

        f_p_pro_s_I = 1;
        System.out.println(f_p_pro_s_I);
        System.out.println(f_p_pro_sf_I);

        super.f_p_pro_I = 1;
        System.out.println(super.f_p_pro_I);
        System.out.println(super.f_p_pro_f_I);

        super.f_p_pro_s_I = 1;
        System.out.println(super.f_p_pro_s_I);
        System.out.println(super.f_p_pro_sf_I);
    }

    public void test_p_def_f() {
        f_p_I = 1;
        System.out.println(f_I);
        System.out.println(f_f_I);

        f_p_s_I = 1;
        System.out.println(f_p_s_I);
        System.out.println(f_p_sf_I);

        super.f_p_I = 1;
        System.out.println(super.f_p_I);
        System.out.println(super.f_p_f_I);

        super.f_p_s_I = 1;
        System.out.println(super.f_p_s_I);
        System.out.println(super.f_p_sf_I);
    }

    public void test_pp_pro_f() {
        f_pp_pro_I = 1;
        System.out.println(f_pp_pro_I);
        System.out.println(f_pp_pro_f_I);

        f_pp_pro_s_I = 1;
        System.out.println(f_pp_pro_s_I);
        System.out.println(f_pp_pro_sf_I);

        super.f_pp_pro_I = 1;
        System.out.println(super.f_pp_pro_I);
        System.out.println(super.f_pp_pro_f_I);

        super.f_pp_pro_s_I = 1;
        System.out.println(super.f_pp_pro_s_I);
        System.out.println(super.f_pp_pro_sf_I);
    }

    public void test_pp_pro_static_f() {
        f_pp_pro_s_I = 1;
        System.out.println(f_pp_pro_s_I);
        System.out.println(f_pp_pro_sf_I);

        this.f_pp_pro_s_I = 1;
        System.out.println(this.f_pp_pro_s_I);
        System.out.println(this.f_pp_pro_sf_I);

        ChildBean.this.f_pp_pro_s_I = 1;
        System.out.println(ChildBean.this.f_pp_pro_s_I);
        System.out.println(ChildBean.this.f_pp_pro_sf_I);

        super.f_pp_pro_s_I = 1;
        System.out.println(super.f_pp_pro_s_I);
        System.out.println(super.f_pp_pro_sf_I);

        ParentBean.f_pp_pro_s_I = 1;
        System.out.println(ParentBean.f_pp_pro_s_I);
        System.out.println(ParentBean.f_pp_pro_sf_I);

        ParentParentBean.f_pp_pro_s_I = 1;
        System.out.println(ParentParentBean.f_pp_pro_s_I);
        System.out.println(ParentParentBean.f_pp_pro_sf_I);
    }

    public void test_pri_m() {
        m_pri();
        m_pri_f();
        m_pri_s();
        m_pri_sf();

        this.m_pri();
        this.m_pri_f();
        this.m_pri_s();
        this.m_pri_sf();

        ChildBean.this.m_pri();
        ChildBean.this.m_pri_f();
        ChildBean.this.m_pri_s();
        ChildBean.this.m_pri_sf();
    }

    public void test_pro_m() {
        m_pro();
        m_pro_f();
        m_pro_s();
        m_pro_sf();
        m_pp_pro_over();
    }

    public void test_def_m() {
        m();
        m_f();
        m_s();
        m_sf();
    }

    public void test_p_pro_m() {
        m_p_pro();
        m_p_pro_f();
        m_p_pro_s();
        m_p_pro_sf();
        super.m_p_pro();
        super.m_p_pro_f();
        super.m_p_pro_s();
        super.m_p_pro_sf();
    }

    public void test_p_def_m() {
        m_p();
        m_p_f();
        m_p_s();
        m_p_sf();
        super.m_p();
        super.m_p_f();
        super.m_p_s();
        super.m_p_sf();
    }

    public void test_pp_pro_m() {
        m_pp_pro();
        m_pp_pro_over();
        m_pp_pro_f();
        m_pp_pro_s();
        m_pp_pro_sf();

        super.m_pp_pro();
        super.m_pp_pro_f();
        super.m_pp_pro_s();
        super.m_pp_pro_sf();
    }

    public void test_pp_pro_static_m() {
        m_pp_pro_s();
        m_pp_pro_sf();

        this.m_pp_pro_s();
        this.m_pp_pro_sf();

        ChildBean.this.m_pp_pro_s();
        ChildBean.this.m_pp_pro_sf();

        ChildBean.m_pp_pro_s();
        ChildBean.m_pp_pro_sf();

        super.m_pp_pro_s();
        super.m_pp_pro_sf();

        ParentBean.m_pp_pro_s();
        ParentBean.m_pp_pro_sf();

        ParentParentBean.m_pp_pro_s();
        ParentParentBean.m_pp_pro_sf();
    }

    public void test_pp_pro_vir_m() {
        m_pp_pro();
        m_pp_pro_f();
        m_pp_pro_over();

        this.m_pp_pro();
        this.m_pp_pro_f();
        this.m_pp_pro_over();

        ChildBean.this.m_pp_pro();
        ChildBean.this.m_pp_pro_f();
        ChildBean.this.m_pp_pro_over();

        super.m_pp_pro();
        super.m_pp_pro_f();
        super.m_pp_pro_over();
    }
}
